

#ifndef STORAGEAO_INTERFACE_H
#define STORAGEAO_INTERFACE_H

#include <stdint.h>
#include <string>
#include "app_platform/cntl_info.h"

#include "erp/storage/po/stockpo_storage.h"	
#include "erp/storage/po/losebillpo_storage.h"	
#include "erp/storage/po/stockcheckitempo_storage.h"	
#include "erp/storage/po/stockfilterpo_storage.h"	
#include <set>	
#include "erp/storage/po/overflowbillpo_storage.h"	
#include "erp/storage/po/overflowbillorlosebillfilterpo_storage.h"	
#include <map>	
#include <vector>	
#include "erp/storage/po/disassemblebillfilterpo_storage.h"	
#include "erp/storage/po/stockbranch_relpo_storage.h"	
#include "erp/storage/po/disassemblebillpo_storage.h"	
#include "erp/storage/po/stockcheckmasterpo_storage.h"	
#include "erp/storage/po/stockcheckfilterpo_storage.h"	


namespace erp
{
namespace storage
{
namespace ao
{

	/// 同步调用接口
	class IStorageAo	{
	public:
		virtual ~IStorageAo() {}

	public:

		/**
		 *
	 	 *  拆装单创建 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param DisassembleBillPo DisassembleBillInfo: 拆装单信息，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param String outReserve: 返回保留字   		
		 *@param uint64_t DisassembleBillSysNo: 返回添加成功的SysNo  		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t AddDisassembleBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CDisassembleBillPo& DisassembleBillInfo,
				const std::string& inReserve,
				std::string& errmsg,
				std::string& outReserve,
				uint64_t& DisassembleBillSysNo
	    	) = 0;

		/**
		 *
	 	 *  写入报损/报溢表 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param LoseBillPo LoseBillInfo: 报损表信息，必填  				
		 *@param OverFlowBillPo OverFlowBillInfo: 报溢表信息，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param String outReserve: 返回保留字   		
		 *@param uint64_t OverFlowBillSysNo: 返回添加成功的SysNo  		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t AddLoseBillOrOverFlowBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CLoseBillPo& LoseBillInfo,
				const erp::storage::po::COverFlowBillPo& OverFlowBillInfo,
				const std::string& inReserve,
				std::string& errmsg,
				std::string& outReserve,
				uint64_t& OverFlowBillSysNo
	    	) = 0;

		/**
		 *
	 	 *  写入仓库信息 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param StockPo StockInfo: 仓库信息，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param String outReserve: 返回保留字   		
		 *@param uint64_t StockSysNo: 返回添加成功的SysNo  		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t AddStock(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CStockPo& StockInfo,
				const std::string& inReserve,
				std::string& errmsg,
				std::string& outReserve,
				uint64_t& StockSysNo
	    	) = 0;

		/**
		 *
	 	 *  盘点单创建 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param StockCheckMasterPo StockCheckMasterInfo: 盘点单信息，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param String outReserve: 返回保留字   		
		 *@param uint64_t StockCheckMasterSysNo: 返回添加成功的SysNo  		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t AddStockCheck(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CStockCheckMasterPo& StockCheckMasterInfo,
				const std::string& inReserve,
				std::string& errmsg,
				std::string& outReserve,
				uint64_t& StockCheckMasterSysNo
	    	) = 0;

		/**
		 *
	 	 *  拆装单删除（逻辑） 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param Set DisassemblebillSysNos: 需删除的拆装单SysNos，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param Map errorCode: 删除失败的错误码 		
		 *@param Map errorMsg: 删除失败的错误信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t DeleteDisassembleBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const std::set<uint64_t >& DisassemblebillSysNos,
				const std::string& inReserve,
				std::string& errmsg,
				std::map<uint64_t,uint32_t >& errorCode,
				std::map<uint64_t,std::string >& errorMsg,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  逻辑删除报损/报溢表  
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param Set FLoseBillSysNo: 需删除的报损ID，必填  				
		 *@param Set FOverFlowBillSysNo: 需删除的报溢ID，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param Map errorCode: 删除失败的错误码 		
		 *@param Map errorMsg: 删除失败的错误信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t DeleteLoseBillOrOverFlowBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const std::set<uint64_t >& FLoseBillSysNo,
				const std::set<uint64_t >& FOverFlowBillSysNo,
				const std::string& inReserve,
				std::string& errmsg,
				std::map<uint64_t,uint32_t >& errorCode,
				std::map<uint64_t,std::string >& errorMsg,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  逻辑删除仓库信息 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param Set FStockSysNo: 需删除的仓库ID，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param Map errorCode: 删除失败的错误码 		
		 *@param Map errorMsg: 删除失败的错误信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t DeleteStock(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const std::set<uint64_t >& FStockSysNo,
				const std::string& inReserve,
				std::string& errmsg,
				std::map<uint64_t,uint32_t >& errorCode,
				std::map<uint64_t,std::string >& errorMsg,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  盘点单删除（逻辑） 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param Set StockCheckMasterSysNos: 需删除的拆装单SysNos，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param Map errorCode: 删除失败的错误码 		
		 *@param Map errorMsg: 删除失败的错误信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t DeleteStockCheck(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const std::set<uint64_t >& StockCheckMasterSysNos,
				const std::string& inReserve,
				std::string& errmsg,
				std::map<uint64_t,uint32_t >& errorCode,
				std::map<uint64_t,std::string >& errorMsg,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  拆装单查询（主键） 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param Set DisassembleBillSysnoList: 需获取的仓库sysnos，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param Vector DisassembleBillList: 拆装单信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t GetDisassembleBillBySysNos(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const std::set<uint64_t >& DisassembleBillSysnoList,
				const std::string& inReserve,
				std::string& errmsg,
				std::vector<erp::storage::po::CDisassembleBillPo >& DisassembleBillList,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  拆装单列表（列表过滤） 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param DisassembleBillFilterPo DisassembleBillFilter: 过滤器，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param uint32_t total: 信息总数 		
		 *@param Vector DisassembleBillList: 拆装单信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t GetDisassembleBillList(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const erp::storage::po::CDisassembleBillFilterPo& DisassembleBillFilter,
				const std::string& inReserve,
				std::string& errmsg,
				uint32_t& total,
				std::vector<erp::storage::po::CDisassembleBillPo >& DisassembleBillList,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  根据ID获取报损/报溢表信息 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param Set LoseBillSysNoList: 需获取的仓库sysnos，必填  				
		 *@param Set OverFlowSysNoList: 需获取的仓库sysnos，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param Vector LoseBillList: 报损列表信息 		
		 *@param Vector OverFlowList: 报溢列表信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t GetLoseBillOrOverFlowBillBySysNos(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const std::set<uint64_t >& LoseBillSysNoList,
				const std::set<uint64_t >& OverFlowSysNoList,
				const std::string& inReserve,
				std::string& errmsg,
				std::vector<erp::storage::po::CLoseBillPo >& LoseBillList,
				std::vector<erp::storage::po::COverFlowBillPo >& OverFlowList,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  根据filter获取报损/报溢表
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param OverFlowBillOrLoseBillFilterPo OverFlowBillOrLoseBillFilter: 过滤器，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param uint32_t total: 信息总数 		
		 *@param Vector LoseBillList: 报损列表信息 		
		 *@param Vector OverFlowList: 报溢列表信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t GetLoseBillOrOverFlowBillList(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const erp::storage::po::COverFlowBillOrLoseBillFilterPo& OverFlowBillOrLoseBillFilter,
				const std::string& inReserve,
				std::string& errmsg,
				uint32_t& total,
				std::vector<erp::storage::po::CLoseBillPo >& LoseBillList,
				std::vector<erp::storage::po::COverFlowBillPo >& OverFlowList,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  查询仓库与分支机构关系 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param uint64_t StockSysNo: 仓库sys，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param String outReserve: 返回保留字   		
		 *@param Vector StockBranchList: 仓库与分支机构关系列表信息 		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t GetStockBranch_RelBySysNo(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				uint64_t StockSysNo,
				const std::string& inReserve,
				std::string& errmsg,
				std::string& outReserve,
				std::vector<erp::storage::po::CStockBranch_RelPo >& StockBranchList
	    	) = 0;

		/**
		 *
	 	 *  根据ID获取仓库信息 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param Set IDList: 需获取的仓库sysnos，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param Vector StockList: 仓库列表信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t GetStockBySysNos(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const std::set<uint64_t >& StockSysnoList,
				const std::string& inReserve,
				std::string& errmsg,
				std::vector<erp::storage::po::CStockPo >& StockList,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  盘点单查询（主键） 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param Set StockCheckMasterSysNoList: 需获取的仓库sysnos，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param Vector StockCheckList: 盘点单信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t GetStockCheckBySysNos(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const std::set<uint64_t >& StockCheckMasterSysNoList,
				const std::string& inReserve,
				std::string& errmsg,
				std::vector<erp::storage::po::CStockCheckMasterPo >& StockCheckList,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 * 盘点单列表（列表过滤） 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param StockCheckFilterPo StockCheckFilterPo: 过滤器，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param uint32_t total: 信息总数 		
		 *@param Vector StockCheckList: 盘点单信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t GetStockCheckList(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const erp::storage::po::CStockCheckFilterPo& StockCheckFilterPo,
				const std::string& inReserve,
				std::string& errmsg,
				uint32_t& total,
				std::vector<erp::storage::po::CStockCheckMasterPo >& StockCheckList,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  根据filter获取仓库信息 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param StockFilterPo StockFilter: 过滤器，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param uint32_t total: 仓库总数 		
		 *@param Vector StockList: 仓库列表信息 		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t GetStockList(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const erp::storage::po::CStockFilterPo& StockFilter,
				const std::string& inReserve,
				std::string& errmsg,
				uint32_t& total,
				std::vector<erp::storage::po::CStockPo >& StockList,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  维护仓库与分支机构关系 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param uint64_t StockSysNo: 仓库sys，必填  				
		 *@param Set BranchSysNos: 仓库sys，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t ModifyStockBranch_Rel(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				uint64_t StockSysNo,
				const std::set<uint64_t >& BranchSysNos,
				const std::string& inReserve,
				std::string& errmsg,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  拆装单修改 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param DisassembleBillPo DisassembleBillInfo: 拆装单信息，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t UpdataDisassembleBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CDisassembleBillPo& DisassembleBillInfo,
				const std::string& inReserve,
				std::string& errmsg,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  修改报损/报溢表 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param LoseBillPo LoseBillInfo: 报损表信息，必填  				
		 *@param OverFlowBillPo OverFlowBillInfo: 报溢表信息，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t UpdataLoseBillOrOverFlowBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CLoseBillPo& LoseBillInfo,
				const erp::storage::po::COverFlowBillPo& OverFlowBillInfo,
				const std::string& inReserve,
				std::string& errmsg,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  盘点单修改 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param StockCheckMasterPo StockCheckMasterInfo: 盘点单信息，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t UpdataStockCheck(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CStockCheckMasterPo& StockCheckMasterInfo,
				const std::string& inReserve,
				std::string& errmsg,
				std::string& outReserve
	    	) = 0;

		/**
		 *
	 	 *  修改仓库信息 
		 *
		 *@param String machineKey: 机器码，必填  				
		 *@param String source: 调用来源，必填  				
		 *@param uint32_t sceneId: 场景id，必填  				
		 *@param uint32_t option: 功能选项，扩展选填  				
		 *@param StockPo StockInfo: 仓库信息，必填  				
		 *@param String inReserve: 请求保留字  				
		 *@param String errmsg: 错误信息  		
		 *@param String outReserve: 返回保留字   		
		 *
		 *@return  uint32_t : 0(成功) 其它失败
 	     *
		 */
	    virtual uint32_t UpdateStock(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CStockPo& StockInfo,
				const std::string& inReserve,
				std::string& errmsg,
				std::string& outReserve
	    	) = 0;
	};

	///异步调用接口
	class IStorageAoAsyc
	{
	public:
		virtual ~IStorageAoAsyc() {}
	public:
		virtual uint32_t SendAddDisassembleBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CDisassembleBillPo& DisassembleBillInfo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvAddDisassembleBill(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::string& outReserve,
				uint64_t& DisassembleBillSysNo
				) = 0;
		virtual uint32_t SendAddLoseBillOrOverFlowBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CLoseBillPo& LoseBillInfo,
				const erp::storage::po::COverFlowBillPo& OverFlowBillInfo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvAddLoseBillOrOverFlowBill(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::string& outReserve,
				uint64_t& OverFlowBillSysNo
				) = 0;
		virtual uint32_t SendAddStock(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CStockPo& StockInfo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvAddStock(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::string& outReserve,
				uint64_t& StockSysNo
				) = 0;
		virtual uint32_t SendAddStockCheck(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CStockCheckMasterPo& StockCheckMasterInfo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvAddStockCheck(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::string& outReserve,
				uint64_t& StockCheckMasterSysNo
				) = 0;
		virtual uint32_t SendDeleteDisassembleBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const std::set<uint64_t >& DisassemblebillSysNos,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvDeleteDisassembleBill(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::map<uint64_t,uint32_t >& errorCode,
				std::map<uint64_t,std::string >& errorMsg,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendDeleteLoseBillOrOverFlowBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const std::set<uint64_t >& FLoseBillSysNo,
				const std::set<uint64_t >& FOverFlowBillSysNo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvDeleteLoseBillOrOverFlowBill(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::map<uint64_t,uint32_t >& errorCode,
				std::map<uint64_t,std::string >& errorMsg,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendDeleteStock(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const std::set<uint64_t >& FStockSysNo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvDeleteStock(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::map<uint64_t,uint32_t >& errorCode,
				std::map<uint64_t,std::string >& errorMsg,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendDeleteStockCheck(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const std::set<uint64_t >& StockCheckMasterSysNos,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvDeleteStockCheck(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::map<uint64_t,uint32_t >& errorCode,
				std::map<uint64_t,std::string >& errorMsg,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendGetDisassembleBillBySysNos(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const std::set<uint64_t >& DisassembleBillSysnoList,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvGetDisassembleBillBySysNos(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::vector<erp::storage::po::CDisassembleBillPo >& DisassembleBillList,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendGetDisassembleBillList(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const erp::storage::po::CDisassembleBillFilterPo& DisassembleBillFilter,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvGetDisassembleBillList(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				uint32_t& total,
				std::vector<erp::storage::po::CDisassembleBillPo >& DisassembleBillList,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendGetLoseBillOrOverFlowBillBySysNos(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const std::set<uint64_t >& LoseBillSysNoList,
				const std::set<uint64_t >& OverFlowSysNoList,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvGetLoseBillOrOverFlowBillBySysNos(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::vector<erp::storage::po::CLoseBillPo >& LoseBillList,
				std::vector<erp::storage::po::COverFlowBillPo >& OverFlowList,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendGetLoseBillOrOverFlowBillList(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const erp::storage::po::COverFlowBillOrLoseBillFilterPo& OverFlowBillOrLoseBillFilter,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvGetLoseBillOrOverFlowBillList(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				uint32_t& total,
				std::vector<erp::storage::po::CLoseBillPo >& LoseBillList,
				std::vector<erp::storage::po::COverFlowBillPo >& OverFlowList,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendGetStockBranch_RelBySysNo(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				uint64_t StockSysNo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvGetStockBranch_RelBySysNo(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::string& outReserve,
				std::vector<erp::storage::po::CStockBranch_RelPo >& StockBranchList
				) = 0;
		virtual uint32_t SendGetStockBySysNos(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const std::set<uint64_t >& StockSysnoList,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvGetStockBySysNos(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::vector<erp::storage::po::CStockPo >& StockList,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendGetStockCheckBySysNos(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const std::set<uint64_t >& StockCheckMasterSysNoList,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvGetStockCheckBySysNos(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::vector<erp::storage::po::CStockCheckMasterPo >& StockCheckList,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendGetStockCheckList(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const erp::storage::po::CStockCheckFilterPo& StockCheckFilterPo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvGetStockCheckList(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				uint32_t& total,
				std::vector<erp::storage::po::CStockCheckMasterPo >& StockCheckList,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendGetStockList(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				const erp::storage::po::CStockFilterPo& StockFilter,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvGetStockList(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				uint32_t& total,
				std::vector<erp::storage::po::CStockPo >& StockList,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendModifyStockBranch_Rel(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				uint64_t StockSysNo,
				const std::set<uint64_t >& BranchSysNos,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvModifyStockBranch_Rel(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendUpdataDisassembleBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CDisassembleBillPo& DisassembleBillInfo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvUpdataDisassembleBill(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendUpdataLoseBillOrOverFlowBill(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CLoseBillPo& LoseBillInfo,
				const erp::storage::po::COverFlowBillPo& OverFlowBillInfo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvUpdataLoseBillOrOverFlowBill(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendUpdataStockCheck(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CStockCheckMasterPo& StockCheckMasterInfo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvUpdataStockCheck(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::string& outReserve
				) = 0;
		virtual uint32_t SendUpdateStock(
				const CCntlInfo& rCntlInfo,

				const std::string& machineKey,
				const std::string& source,
				uint32_t sceneId,
				uint32_t option,
				const erp::storage::po::CStockPo& StockInfo,
				const std::string& inReserve
				) = 0;
		virtual uint32_t RecvUpdateStock(
				const CCntlInfo& rCntlInfo,

				std::string& errmsg,
				std::string& outReserve
				) = 0;
	};
	
	
}
}
}

#endif /*STORAGEAO_INTERFACE_H*/
